import http from 'wechat-http'

http.baseURL = 'http://live-api.itheima.net'

http.intercept.response =(res)=>{

  if(res.data.code !==10000){
    wx.showToast({
      title: 'res.data.message',
      mask:true,
      icon:'error'
    })
    return Promise.reject(res)
  }
  return res.data
  }
  wx.http=http

/**配置请求拦截器 */
http.intercept.request = (params) =>{
  //读取全局实例中的token
  const{token}=getApp()
  //指定一个公共的头信息
  //初始为空对象后续可以扩展
  const defaultHeader = {}
  //追加token头信息
  if(token) defaultHeader.Authorization =token
  //合并自定义头信息和公共头信息
  params.header =Object.assign(defaultHeader,params.header)
  //处理后的请求参数
  return params
},
http.intercept.response =async({statusCode,data,config})=>{
  //statusCode 为状态码
  if(statusCode ===401){
    //config 是调用接口的参数
    //refreshToken 过期的情形
    if(config.url.includes('/refreshToken')){
      //读取当前历史栈
      const pageStack = getCurrentPages()
      //取出当前页面路径，登录成功能跳转到该页面
      const currentPage = pageStack[pageStack.length-1]
      //取出当期页面路径，登录成功能跳转到该页面
      const redirectURL =currentPage.route
      //引导用户到登录页面
      return wx.redirectTo({
        url: `/pages/login/index?redirectURL=/${redirectURL}`,
      })
    }
    //如果本地没有refresh_token 没有必要刷新token
    if(!app.refresh_token) return
    //获取全局应用实例
    const app =getApp()
    //使用 refreshToken 更新token
    const res = await http({
      url:'/refreshToken',
      method:'POST',
      header:{
        //这时要注意使用的是 refresh_token
        Authorization:`Bearer${app.refresh_token}`,
      },
    })
    //更新token和refresh_token
    app.setToken(res.data.token,res.data.refresh_token)
    //重新发起请求
    return http(
      Object.assign(config,{
        //传递新的token
        header:{
          Authorization:app.token,
        },
      })
    )
  }
  return data
}
export default http